home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 1 / Cream of the Crop 1.iso / PROGRAM / SCLIB.ARJ / SCL1SAMP.EXE / LINKLST.C < prev    next >
C/C++ Source or Header  |  1992-01-01  |  3KB  |  118 lines

  1. #include <scl1.h>
  2. #include <scl1keys.h>
  3. #include <string.h>
  4. #include <malloc.h>
  5.  
  6. /* This file shows the use of the LinkedList to create and manage a 
  7.    linked list */
  8.  
  9. main()
  10. {
  11. LLData ld;
  12. char buffer[20];
  13. int i,Mess;
  14. unsigned int key=0;
  15.  
  16. InitVideo();
  17. LinkedList(LL_INIT,&ld);        /* init */
  18.  
  19.     /* add 20 elements ti list */
  20.  
  21. for(i=0;i < 20;++i)
  22.     {
  23.     sprintf(buffer,"linea #%i",i);
  24.     ld.DataSize=strlen(buffer)+1;   /* elements can have different sizes */
  25.     ld.Data=buffer;                 /* point to our data */
  26.     LinkedList(LL_ADD,&ld);
  27.     }
  28.  
  29. LinkedList(LL_FIRST,&ld);       /* move to first position */
  30.  
  31. printf("%s size:%i\r\n",ld.Data,ld.DataSize);
  32.  
  33. Mess=LL_OK;
  34.  
  35. do
  36.     {
  37.     switch(key)     /* translate keystroke to message */
  38.         {
  39.         case UP:
  40.             Mess=LL_PREVIOUS;
  41.             break;
  42.         case DOWN:
  43.             Mess=LL_NEXT;
  44.             break;
  45.         case HOME:
  46.             Mess=LL_FIRST;
  47.             break;
  48.         case END:
  49.             Mess=LL_LAST;
  50.             break;
  51.         case INS:
  52.  
  53.         /* let user insert new element */
  54.  
  55.             memset(buffer,0,sizeof(buffer));
  56.             if(DialogBox(7,"Text:",0x70,10,CC_ANY,buffer)!=-1)
  57.                 {
  58.  
  59.             /*
  60.                 ld.Data points to new data
  61.                 ld.DataSize equals size in bytes */
  62.  
  63.                 ld.Data=buffer;
  64.                 ld.DataSize=strlen(buffer)+1;
  65.                 Mess=LinkedList(LL_INSERT,&ld);
  66.                 }
  67.             Mess=0;
  68.             break;
  69.         case DEL:
  70.             Mess=LL_DELETE;
  71.             break;
  72.         case ENTER:
  73.  
  74.         /* let user modify data */
  75.  
  76.             strcpy(buffer,ld.Data);
  77.             if(DialogBox(7,"Text:",0x70,10,CC_ANY,buffer)!=-1)
  78.                 {
  79.                 ld.Data=buffer;
  80.                 ld.DataSize=strlen(buffer)+1;
  81.  
  82.                 /* replace previous data */
  83.  
  84.                 Mess=LinkedList(LL_REPLACE,&ld);
  85.                 Mess=0;
  86.                 }
  87.             break;
  88.         case F2:
  89.  
  90.             /* let user modify position */
  91.  
  92.             if(DialogBox(7,"Position:",0x70,10,CC_DIGIT,buffer)!=-1)
  93.                 Mess=LinkedList(LL_SET_POSITION,&ld,atoi(buffer));
  94.             break;
  95.         default:
  96.             Mess=0;
  97.             break;
  98.         }
  99.  
  100.     /* send message to LinkedList */
  101.  
  102.     if(Mess)
  103.         {
  104.         Mess=LinkedList(Mess,&ld);
  105.  
  106.         /* display data at current position,
  107.            ld.Data     points to our data
  108.            ld.DataSize equals size in byes   */
  109.  
  110.         if(Mess!=LL_EMPTY_LIST)
  111.             printf("%s size:%i\r\n",ld.Data,ld.DataSize);
  112.         else
  113.             printf("Empty list\r\n");   /* no data */
  114.         }
  115.     }while((key=GetKey()) != ESC);
  116. LinkedList(LL_DELETE_ALL,&ld);
  117. }
  118.